package icasue.runninginvoke.exposebucket;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.lang.Nullable;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * @Author: Qiao Hang
 * @CreateDate: 2020/7/29 下午1:37
 * @UpdateDate:
 * @Description:
 */
public class RunningInvokeExposePointBucket {

    public static final List<InvokerBucket> exposePointBucket = new CopyOnWriteArrayList<>();

    @Data
    public static class InvokerBucket{
        //方法描述
        @Nullable
        String functionDescription;
        //调度对象类名
        String className;
        //调度的方法名
        String methodName;
        //形参表列以及参数值
        @Nullable
        List<InvokerParams> params = new ArrayList<>();

        @Data
        @AllArgsConstructor
        @NoArgsConstructor
        public static class InvokerParams{
            String paramDoc;
            String paramClassName;
            Object paramValue;
        }
    }
}
